路由器漏洞分析入门:D-Link Service.Cgi远程命令执行漏洞

在正在到来的物联网时代,路由器是一个家庭里面的核心,连接着各种智能设备,路由器会被更多的黑客盯上,用于发动DDos,传播木马、病毒、挖矿软件等。本文以D-Link路由器的一个远程命令执行漏洞为例带你入门路由器漏洞分析。

本文首发在绿盟科技博客:http://blog.nsfocus.net/router-vulnerability/

环境

  1. attifyOS:智能设备固件分析环境(下载:https://github.com/adi0x90/attifyos
  2. 固件二进制文件DIR-645_FIRMWARE_1.03.ZIP (下载:ftp://ftp2.dlink.com/PRODUCTS/DIR-645/REVA/DIR-645_FIRMWARE_1.03.ZIP )

环境启动

  1. 运行fat.py

  2. 输入你下载的zip的路径,在输入下brand就可以了

  3. 最后再就是输入user firmadyne的密码,密码也是firmadyne

  4. 如果不是root用户运行还会输入用户密码

  5. 最后即可启动成功

访问192.168.0.1即可

漏洞分析

先解压,再解开固件(M是递归扫描的意思,e是extract,提取的意思)

1
2
unzip DIR-645_FIRMWARE_1.03.ZIP
binwalk -Me dir645_FW_103.bin

那就可以得到固件的根目录

1
2
3
4
/home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root [oit@ubuntu] [1:22]
> ls
bin etc htdocs lib proc sys usr www
dev home include mnt sbin tmp var

只有htdocs里面和web相关的二进制程序,实际的bin程序基本都是调用busybox

跟进htdocs看看两个bin文件都是mips 32的elf文件,fileaccess.cgi是权限控制相关的

1
2
3
4
5
6
7
/home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root/htdocs [oit@ubuntu] [2:06]
> file cgibin
cgibin: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped

/home/oit/firmware/_dir645_FW_103.bin.extracted/squashfs-root/htdocs [oit@ubuntu] [2:06]
> file fileaccess.cgi
fileaccess.cgi: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped

漏洞在cgibin文件里面,IDA打开,main函数判断假如访问的是service.cgi就调用servicecgi_main

servicecgi_main里面先判断请求的方法,只处理get和post(其实后面都是走一样的路径,所以这个get和post利用都可以),之后是调用cgibin_parse_request,解析CONTENT_TYPE,CONTENT_LENGTH

之后便是解析参数,其中EVENT跟SERVICE都是会调用lxmldbc_system

而lxmldbc_system会调用system执行command,而且是没有任何过滤的,那就存在命令注入的风险了

那么我们得到一种命令执行的挖掘方法就是:通过system反向解引用就可以了

漏洞利用

访问一下http://192.168.0.1/service.cgi(具体ip根据实际修改),是可以访问的

最后即可利用

如果是利用SERVICE字段就得加个ACTION参数

reference

https://cr0n1c.wordpress.com/2018/01/08/exploiting-cheap-labor/

打赏专区